package com.qin.service;

import java.util.List;

import com.qin.entity.Book;

/**
 * 图书服务接口
 * @author BestRiven
 *
 */
public interface BookService {
	/**
	 * 插入图书
	 * @param book 要插入的图书实体类
	 * @return 自增主键
	 */
	public Long insertBook(Book book);
	
	/**
	 * 根据id删除图书
	 * @param id 要删除图书的id
	 * @return 影响行数
	 */
	public int deleteBook(Long id);
	
	/**
	 * 修改图书
	 * @param id 要修改图书的id
	 * @param book 要修改的信息
	 * @return 影响行数
	 */
	public int updateBook(Long id, Book book);
	
	/**
	 * 根据id查询图书
	 * @param id 图书的id
	 * @return 查到的图书
	 */
	public Book getBookById(Long id);
	
	/**
	 * 查询n条推荐图书
	 * @param n 数据条数
	 * @return
	 */
	public List<Book> getRecommendBooks(Integer n);
	
	/**
	 * 根据一级图书分类的id，查询该分类下三级分类的所有图书
	 * @return
	 */
	public List<Book> getBooksByCategoryLevel1Id(Long id);
	
	/**
	 * 根据二级图书分类的id，查询该分类下三级分类的所有图书
	 * @param id
	 * @return
	 */
	public List<Book> getBooksByCategoryLevel2Id(Long id);
	
	/**
	 * 根据三级图书分类的id，查询该分类下的所有图书
	 * @param id
	 * @return
	 */
	public List<Book> getBooksByCategoryLevel3Id(Long id);
	
	/**
	 * 根据一级图书分类的id，查询该分类下三级分类i天以内的所有图书
	 * @param id 一级分类的id
	 * @param i i天以内
	 * @return 所有图书
	 */
	public List<Book> getBooksByCategoryLevel1IdAndD(Long id,long i);
	
	/**
	 * getBooksByCategoryLevel1IdAndD(Long id,int i); 重载，默认是今天
	 * @param id
	 * @return
	 */
	public List<Book> getBooksByCategoryLevel1IdAndD(Long id);
	
	/**
	 * 按照id排序，查询前四条数据，默认四大名著
	 * @return
	 */
	public List<Book> getMasterWork();
	
	/**
	 * 查询所有图书
	 * @return List封装的Book实体类
	 */
	public List<Book> getAllBook();
}
